## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.0 ✔ purrr 1.0.1
## ✔ tibble 3.1.8 ✔ dplyr 1.1.0
## ✔ tidyr 1.3.0 ✔ stringr 1.5.0
## ✔ readr 2.1.3 ✔ forcats 1.0.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## Linking to GEOS 3.11.1, GDAL 3.6.2, PROJ 9.1.1; sf_use_s2() is TRUE
##
## ℹ Google's Terms of Service: <]8;;https://mapsplatform.google.comhttps://mapsplatform.google.com]8;;>
##
## ℹ Please cite ggmap if you use it! Use `citation("ggmap")` for details.
##
##
## Attaching package: 'gridExtra'
##
##
## The following object is masked from 'package:dplyr':
##
## combine
Building on the variables that were previously created to measure listing quality, I will hone in on the variables related to Section 8. For this exploration, I will explore the Section 8 data in a map in order to show the distribution of listings that mention Section 8/housing vouchers. In addition to Section 8 data from Craigslist, I will leverage data provided by the Department of Housing and Urban Development (HUD). First, I will look at the low to moderate income population by tract which “identifies U.S. Census Tracts in which 51% or more of the households earn less than 80 percent of Area Median Income (AMI)”. In addition to the low to moderate income population, I will also explore the Housing Choice Vouchers by Tract which contains “information for Housing Choice Voucher (HCV) recipients aggregated to 2010 U.S. Census Tract geography.”
I first imported the data and filtered it by the Census tracts in Boston.
# Importing low to medium income data & filtering by Boston census tracts
ltm<-st_read('Low_to_Moderate_Income_Population_by_Tract/Low_to_Moderate_Income_Population_by_Tract.shp')
## Reading layer `Low_to_Moderate_Income_Population_by_Tract' from data source
## `/Users/blairwong/Documents/Northeastern/PPUA5262_Big_Data/PPUA5262/Module7/Low_to_Moderate_Income_Population_by_Tract/Low_to_Moderate_Income_Population_by_Tract.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 73752 features and 13 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -178.2278 ymin: 17.88124 xmax: -65.24423 ymax: 71.39048
## Geodetic CRS: WGS 84
ltm_boston<-ltm %>% filter(GEOID %in% census_tract_list_bos)
# Importing HCV & filtering by Boston census tracts
hcv<-st_read('Housing_Choice_Vouchers_by_Tract/HOUSING_CHOICE_VOUCHERS_BY_TRACT.shp')
## Reading layer `HOUSING_CHOICE_VOUCHERS_BY_TRACT' from data source
## `/Users/blairwong/Documents/Northeastern/PPUA5262_Big_Data/PPUA5262/Module7/Housing_Choice_Vouchers_by_Tract/HOUSING_CHOICE_VOUCHERS_BY_TRACT.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 73765 features and 12 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -179.1473 ymin: 17.88133 xmax: 179.7785 ymax: 71.39048
## Geodetic CRS: WGS 84
hcv_boston<-hcv %>% filter(GEOID %in% census_tract_list_bos)
I then created a base Boston map using ggmap.
boston<-get_map(location=c(left = -71.193799,
bottom = 42.22,
right = -70.985746,
top = 42.43),
source="stamen")
## ℹ Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.
boston_map<-ggmap(boston)
boston_map
Afterwards, I added additional layers to the map. First, I created a map with the percentage of low to moderate income families data.
ltm_map<-boston_map + geom_sf(data=ltm_boston, aes(fill=LOWMODPCT), inherit.aes = FALSE) +
scale_fill_gradient(high = "purple", low = "orange") +
labs(fill = "Percentage of \nLow to Moderate \nIncome Families")
## Coordinate system already present. Adding new coordinate system, which will
## replace the existing one.
I then created a map for the percentage of renter occupied housing units with HCVs.
per_hcv_map<-boston_map + geom_sf(data=hcv_boston[hcv_boston$HCV_PCT_RE>0,], aes(fill=HCV_PCT_RE), inherit.aes = FALSE) +
scale_fill_gradient(high = "purple", low = "orange") +
labs(fill = "Percentage Renter \nOccupied Housing Units \nwith HCV")
## Coordinate system already present. Adding new coordinate system, which will
## replace the existing one.
Finally, I created a map using the Section 8 data from Craigslist that shows the number of Section 8 mentions across census tracts. However, I first had to merge the data from Craigslist.
colnames(hcv_boston)[colnames(hcv_boston) == 'GEOID'] = "CT_ID_10"
ct_stats<-merge(hcv_boston, ct_stats, by = "CT_ID_10")
num_sec8_mentions_map<-boston_map + geom_sf(data=ct_stats, aes(fill=SECTION_8_MENTIONS), inherit.aes = FALSE) +
scale_fill_gradient(high = "purple", low = "orange") +
labs(fill = "Number of Section 8 Mentions")
## Coordinate system already present. Adding new coordinate system, which will
## replace the existing one.
Based on the map above, areas with the highest percentage of low to moderate income families are south of downtown. The census tract with the highest percentage is 981100, which covers Jamaica Plain, Mattapan, and Roslindale, at 100%. In addition to 981100, census tract 980300 (Roxbury) also has a high percentage at 100%. Interestingly, within the same neighborhood of Jamaica Plain, the census tract 120105 only has 8.91% of low to moderate income.
One consideration is that this data is based on the 2010 census, which means that the data may potentially be outdated.
Looking at the percentage of renter occupied housing units with HCV, the same census tract 981100 contains a high percentage (61.43%). No other census tract had as many households with HCVs, with a majority hovering around 20 to 40%. Additionally, there are some census tracts without any data at all, indicating that there are no renter-occupied households with HCVs.
Finally, looking at the map with Section 8 mentions from Craigslist,
it is clear that a significant majority of listings do not mention
Section 8 at all. The one census tract with a high number of mentions
(58 mentions) is 110502, which is in Roslindale. However, looking at the
listings within the the 110502 census tract, it appears that there are
multiple listings with the same BODY, which means that the
poster is likely posting the same listing over and over again. Thus, the
number of listings that mention Section 8 are likely to be significantly
lower than 58.
Average Price and Section 8 Mentions
Looking at the plot created in the last exploration, a majority of the census tracts have below 25 mentions. Assuming anything above 25 is an outlier, a new map is shown below.
num_sec8_mentions_map_v2<-boston_map + geom_sf(data=ct_stats[ct_stats$SECTION_8_MENTIONS<25,], aes(fill=SECTION_8_MENTIONS), inherit.aes = FALSE) +
scale_fill_gradient(high = "purple", low = "orange") +
labs(fill = "Number of Section 8 Mentions")
## Coordinate system already present. Adding new coordinate system, which will
## replace the existing one.
num_sec8_mentions_map_v2
With the updated map, a majority of listings still do not mention Section 8, and there are very few that have listings that do mention Section 8. The census tract with the highest number of mentions (16) is 140300 in Hyde Park.
While there are a handful of options for low to moderate income families to find housing besides vouchers (notably public housing and mixed-income housing), housing choice vouchers are sometimes praised as one of the most effective ways of addressing the housing crisis. One of the goals of vouchers is to de-concentrate poverty by allowing families to move to higher-income neighborhoods. However, looking at the percentage of low to moderate income families map & the percentage of renter occupied housing units with HCV, we can see that the voucher program was not overwhelmingly successful at de-concentrating low-income families since census tract 981100 contains the highest levels in both graphs. Additionally, most of the tracts with a higher percentage in the low to moderate income graph are aligned with the tracts in the percentage of units with HCVs.
The final map of section 8 mentions in Craigslist listings is especially bleak since a majority of tracts do not have listings that mention vouchers. How can families with vouchers move to higher-income neighborhoods if listings do not explicitly welcome them? We already know that the housing search with a voucher is stressful and time-limited, which means that families with vouchers are not set up for success from the start.
The three maps offer critiques of the housing choice voucher program because we can see that the HCV program did not fully achieve its goal of dispersing concentrated poverty, still concentrating low-income families in the same census tracts. This ultimately shows that there is significant work to be done in ensuring that landlords do not discriminate against voucher holders and ensuring that the voucher application/search process is as streamlined as possible. This should also bolster conversations around other solutions to the housing crisis, as we can see that vouchers do not fully meet the needs of low to moderate income families.